<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="../js/vue.js"></script>
    </head>
    <body>
        <!-- 
            生命周期：
                1.又名：生命周期回调函数、生命周期函数、生命周期钩子。
                2.是什么：Vue在关键时刻帮我们调用的一些特殊名称的函数。
                3.生命周期函数的名字不可更改，但函数的具体内容是程序员根据需求编写的。
                4.生命周期函数中的this指向是vm或 组件实例对象。
        -->
        <div id="root">
            <h2>n的值是{{n}}</h2>
            <button @click="add()">点我n+1</button>
            <button @click="bye()">点我销毁vm</button>
        </div>
    </body>
    <script>
        const vm = new Vue({
            el:'#root',
            data() {
                return {
                    n:1
                }
            },
            methods: {
                add() {
                    console.log('add')
                    this.n++
                },
                bye() {
                    console.log('bye')
                    this.$destroy()
                }
            },
            beforeCreate () {
                console.log("beforeCreate")
            },
            created() {
                console.log("created")
            },
            beforeMount() {
                console.log("beforeMount");
            },
            mounted() {
                console.log("mounted");
            },
            beforeUpdate() {
                console.log("beforeUpdate")
            },
            updated() {
                console.log("updated")
            },
            beforeDestroy() {
                console.log("beforeDestroy");
            },
            destroyed() {
                console.log("destroyed");
            }
        })

        // 方式一
        // setInterval(() => {
        //     vm.opacity -= 0.01
        //     if (vm.opacity <= 0) {
        //         vm.opacity = 1
        //     }
        // }, 16);
    </script>
</html>